/*
更新日期：2017、01、16
作者：盛彬
备注信息：
类似于AVFramePP 这里是把codec用C++类的方式再封装一次 涉及需要手动清理的一律封装好再用
一次性工具 禁止二次使用
*/
#pragma once
#include "AllHeader.hpp"
#include "libLog.hpp"

#ifndef AVCodecToolPP_H
#define AVCodecToolPP_H

class AVCodecContextPP :public libLog
{
public:
    AVCodecContextPP();
    ~AVCodecContextPP();

    int SetDecodecCtx(AVCodecParameters *_par); //不带码率的是解码 否则反之
    int SetEncodecCtx(AVCodecParameters *_par); //这个函数目前只用于音频编码器的设置   写入ffserver的视频编码有参数导入问题
    //
    int DecodecPacket(AVPacket *_packet,AVFrame *_frame); //返回1：写入解码器失败 2：读取帧失败
    int EncodecFrame(AVFrame *_frame, AVPacket *_packet); //返回1：写入帧失败 2：读取包失败
public:
    AVCodecContext *codecctx{ nullptr }; //public，便于之后需要单独设置些什么参数的时候用
private:
    bool b_new{ true };
};

#endif // !AVCodecToolPP_H